package com.project.personal_blog.garbage_classification_management_system.service;

import com.project.personal_blog.garbage_classification_management_system.pojo.User;

import java.util.List;

/**
 * 定义一个接口RootService，用于提供用户管理系统的服务
 */
public interface RootService {
    /**
     * 删除所有用户
     * @return boolean 返回删除结果
     */
    boolean deleteUsers();

    /**
     * 查询所有用户
     * @return List<User> 返回用户列表
     */
    List<User> selectUsers();

    /**
     * 根据用户名查询用户
     * @param username 用户名
     * @return User 返回用户对象
     */
    User selectByUsername(String username);

    /**
     * 根据id查询用户
     * @param id id
     * @return User 返回用户对象
     */
    User selectById(Integer id);

    /**
     * 根据电话号码查询用户
     * @param phoneNumber 电话号码
     * @return User 返回用户对象
     */
    User selectByPhoneNumber(String phoneNumber);

    /**
     * 根据邮箱查询用户
     * @param email 邮箱
     * @return User 返回用户对象
     */
    User selectByEmail(String email);

    /**
     * 添加用户
     * @param user 用户对象
     * @return boolean 返回添加结果
     */
    User addUser(User user);

    /**
     * 删除用户
     * @param id id
     * @return boolean 返回删除结果
     */
    boolean deleteUser(Integer id);

    /**
     * 更新用户
     * @param user 用户对象
     * @return boolean 返回更新结果
     */
    User updateUser(User user);

    /**
     * 分页查询用户
     * @param pageNumber 页码
     * @param pageSize 每页数量
     * @return boolean 返回分页查询结果
     */
    boolean pageUser(Integer pageNumber, Integer pageSize);

    /**
     * 根据id排序用户
     * @param id1 id1
     * @param id2 id2
     * @return boolean 返回排序查询结果
     */
    boolean sortById(Integer id1, Integer id2);

    /**
     * 根据名字排序用户
     * @param name1 name1
     * @param name2 name2
     * @return boolean 返回排序查询结果
     */
    boolean sortByName(String name1, String name2);

    /**
     * 根据电话号码排序用户
     * @param phoneNumber1 phoneNumber1
     * @param phoneNumber2 phoneNumber2
     * @return boolean 返回排序查询结果
     */
    boolean sortByPhoneNumber(String phoneNumber1, String phoneNumber2);

    /**
     * 根据邮箱排序用户
     * @param email1 email1
     * @param email2 email2
     * @return boolean 返回排序查询结果
     */
    boolean sortByEmail(String email1, String email2);
}
